前面三週我們介紹了不少 AI Security 的攻擊與防禦方式,到了第四週我想把前面學過的東西組合起來,看看現在很常被討論的 AI Agent,AI Agent 是能夠根據目標進行判斷,並使用外部工具完成任務的 AI 系統,一般 LLM 主要的能力是提供文字回應,但 Agent 除了產生文字之外,還可能被提供各種 Tools,例如前面常說的讀取 Email、查詢 Database 或是呼叫 API 之類的,LLM 開始從單純的回答問題,變成可以決定要使用什麼能力完成任務。
但 Agent 不代表一個會自己思考的機器人,第一次看到 Agent 很容易把它想得很複雜,其實它很簡單,一個簡易的 Agent Application 可能只是準備幾個 Tool:
const tools = {
getWeather,
searchEmail,
createCalendarEvent
};
接著讓 LLM 根據使用者的需求,判斷需要使用哪個 Tool,例如使用者要求看明天會不會下雨,LLM 就會判斷需要 getWeather(),Application 執行 Tool,把天氣資料交回模型,模型再產生最後的回答,當然如果任務比較複雜 Agent 也可能連續使用多個 Tool,所以說 AI 發展得如此神速,AI 已經不只是產生文字,而是可以協助完成一連串工作。
假設我們真的要做一個 Email Agent,前面學過的防禦方式幾乎都派得上用場,收到 Email 後可以利用 Input Validation 檢查內容;Agent 可以使用哪些 Tool,則透過 Least Privilege 限制;如果 AI 要寄信、刪除資料或執行其他高風險操作,可以加入 Human-in-the-loop;API Key 不直接交給模型,而是由 Backend 與 Secret Management 處理;最後再利用 Logging & Monitoring 觀察 Agent 到底使用了哪些 Tool、有沒有出現異常行為,這些單獨看可能只是一些傳統 Security 技術,但放進 Agent 系統之後它們會開始組成真正的安全邊界。
AI Agent 並不是一個全新的 LLM,而是讓 LLM 可以透過 Tool 與外部系統互動,進一步完成任務,但我們也要記得當 AI Application 增加新的能力,同時也可能增加新的攻擊面,Tool 本身就是很重要的 Attack Surface,所以明天就來拆開 Agent 最重要的能力之一:
Day 23|Tool Calling Security:AI 可以呼叫 API,那誰來決定它能做什麼?